home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / genmix1b.zip / GENMIX / SRC / PORTMEM.C < prev    next >
C/C++ Source or Header  |  1995-04-12  |  3KB  |  202 lines

  1. /* PORTMEM.C -- Memory allocation 
  2.  */
  3.  
  4. #include "port.h"
  5.  
  6.  
  7. /* -------- MACINTOSH 68k / POWER PC -------- */
  8.  
  9. #if ismac || isppc
  10.  
  11. void    portFatalError(rescode res, short where)
  12. {
  13.     Debugger();
  14.  
  15. long    memGetMaxAlloc()
  16. {
  17.     long    siz;
  18.  
  19.     siz = MaxBlock();
  20.     #if isdebug
  21.         if (MemErr()) portFatalError(badmem, 0);
  22.     #endif;
  23.     return siz;
  24. }
  25.  
  26. long    memGetStackSpace()
  27. {
  28.     long    siz;
  29.  
  30.     siz = StackSpace();
  31.     #if isdebug
  32.         if (!siz) portFatalError(badmem, 0);
  33.     #endif
  34.     return siz;
  35. }
  36.  
  37. void    memClear(pmem p, long siz)
  38. {
  39.     memset(p, 0, siz);
  40.     return;
  41. }
  42.  
  43. void    memSet(pmem p, char c, long siz)
  44. {
  45.     memset(p, c, siz);
  46.     return;
  47. }
  48.  
  49. void    memCopy(pmem psrc, pmem pdest, long siz)
  50. {
  51.     memcpy(pdest, psrc, siz);
  52.     return;
  53. }
  54.  
  55. void    memMove(pmem psrc, pmem pdest, long siz)
  56. {
  57.     memmove(pdest, psrc, siz);
  58.     return;
  59. }
  60.  
  61. pmem        memNew(long siz)
  62. {
  63.     pmem        pdata;
  64.     
  65.     pdata = NewPtr(siz);
  66.     if (LMGetMemErr()) portFatalError(badmem, 0);
  67.     return pdata;
  68. }
  69.  
  70. void    memDispose(pmem pdata)
  71. {
  72.     DisposPtr(pdata);
  73.     #if isdebug
  74.         if (LMGetMemErr()) portFatalError(badmem, 0);
  75.     #endif
  76.     return;
  77. }
  78.  
  79. long    memGetSize(pmem pdata)
  80. {
  81.     long size;
  82.     
  83.     size = GetPtrSize(pdata);
  84.     #if isdebug
  85.         if (LMGetMemErr()) portFatalError(badmem, 0);
  86.     #endif
  87.     return size;
  88. }
  89.  
  90. #endif    // if ismac || isppc
  91.  
  92.  
  93. /* -------- WINDOWS 31/95/NT -------- */
  94.  
  95. #if    iswin
  96.  
  97. void portFatalError(rescode type, short num)
  98. {
  99.     char    *msg;
  100.     char    msgs[80];
  101.  
  102.     switch (type) {
  103.         case badsid:    msg="bad star id: %d";                break;
  104.         case badsiz:    msg="bad star file size: %d";        break;
  105.         case badmem:    msg="memory error: %d";                break;
  106.         case badmat:    msg="bad star file version: %d";    break;
  107.         case badfil:    msg="file error: %d";                break;
  108.         case badtxt:    msg="text error: %d";                break;
  109.         case badlok:    msg="bad lock use count: %d";        break;
  110.         case badlog:    msg="logic error: %d";                break;
  111.         default:        msg="undefined %d";                    break;
  112.     }
  113.     sprintf(msgs, msg, num);
  114.     #if istest
  115.     DebugBreak();
  116.     #else
  117.     FatalAppExit(0, msgs);
  118.     #endif
  119. }
  120.  
  121. long    memGetMaxAlloc()
  122. {
  123.     MEMORYSTATUS    ms;
  124.     DWORD            siz;
  125.     
  126.     ms.dwLength = sizeof(MEMORYSTATUS);
  127.     GlobalMemoryStatus(&ms);
  128.     siz = ms.dwAvailVirtual;
  129.     if (ms.dwAvailPageFile < siz) siz = ms.dwAvailPageFile;
  130.     return (long) siz;
  131. }
  132.  
  133. long    memGetStackSpace()
  134. {
  135.     return memGetMaxAlloc();
  136. }
  137.  
  138. void    memClear(pmem pdata, long siz)
  139. {
  140.     ZeroMemory((PVOID)pdata, (DWORD) siz);
  141.     return;
  142. }
  143.  
  144. void    memSet(pmem pdata, char c, long siz)
  145. {
  146.     FillMemory((PVOID)pdata, (DWORD)siz, (BYTE)c);
  147.     return;
  148. }
  149.  
  150. void    memCopy(pmem psrc, pmem pdest, long siz)
  151. {
  152.     CopyMemory((PVOID)pdest, (PVOID)psrc, (DWORD)siz);
  153.     return;
  154. }
  155.  
  156. void    memMove(pmem psrc, pmem pdest, long siz)
  157. {
  158.     MoveMemory((PVOID)pdest, (PVOID)psrc, (DWORD)siz);
  159.     return;
  160. }
  161.  
  162. pmem    memNew(long siz)
  163. {
  164.     LPSTR        p;
  165.    
  166.     if (siz <= 0) siz = 1;
  167.     p = (LPSTR) GlobalAlloc(GMEM_FIXED, siz);
  168.     if (!p) portFatalError(badmem, 0);
  169.     return (pmem) p;
  170. }
  171.  
  172. void    memDispose(pmem pdata)
  173. {    
  174.     HGLOBAL        res;    
  175.  
  176.     res = GlobalFree((HANDLE)pdata);
  177.     #if isdebug
  178.         if (res) portFatalError(badmem, 0);
  179.     #endif
  180.     return;
  181. }
  182.  
  183. long    memGetSize(pmem pdata)
  184. {
  185.     DWORD    size;
  186.  
  187.     #if isdebug
  188.         if (GlobalFlags((HANDLE)pdata) == GMEM_INVALID_HANDLE) 
  189.             portFatalError(badmem, 0);
  190.     #endif
  191.     size = GlobalSize((HANDLE)pdata);
  192.     #if isdebug
  193.         if (!size) portFatalError(badmem, 0);
  194.     #endif
  195.     return (long) size;
  196. }
  197.  
  198. #endif    // if iswin
  199.  
  200.  
  201.